#include <stdio.h>
#define tamanho 10
main()
{
  char celulas[tamanho][tamanho];
  char geracao[tamanho][tamanho];
  int cont;
  int ger = 0;
  char resp = 'n';
  int i,j;
  
  for(i = 1; i < (tamanho -1); i++) {
        printf("%i: ", i); 
        for(j = 1; j < (tamanho -1); j++) {
              celulas[i][j] = getche();
              if(j == (tamanho - 2)) { printf("\n"); }
        }
  }
  printf("\n");
  
  while(resp != 's') {
      for(i = 0; i < tamanho; i++) {
         for(j = 0; j < tamanho; j++) {
              geracao[i][j] = '#';
         }
      }
      for(i = 1; i < (tamanho - 1); i++) {
         for(j = 1; j < (tamanho - 1); j++) {
              geracao[i][j] = ' ';
         }
      }
      
      for(i = 1; i < (tamanho -1); i++) {
            for(j = 1; j < (tamanho -1); j++) {
                 cont = 0;

                 if(celulas[i][j] != '#'){
                     if(celulas[i-1][j-1] == '*'){cont++;}       
                     if(celulas[i-1][j] == '*'){cont++;}
                     if(celulas[i-1][j+1] == '*'){cont++;}
                     if(celulas[i][j-1] == '*'){cont++;}
                     if(celulas[i][j+1] == '*'){cont++;}
                     if(celulas[i+1][j-1] == '*'){cont++;}
                     if(celulas[i+1][j] == '*'){cont++;}
                     if(celulas[i+1][j+1] == '*'){cont++;}             
                 }

                 switch (cont) {
                        case 0 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}       
                        case 1 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}       
                        case 2 : if(celulas[i][j] == '*'){geracao[i][j] = '*';}      
                        case 3 : geracao[i][j] = '*';
                        case 4 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}
                        case 5 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}
                        case 6 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}
                        case 7 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}
                        case 8 : if(celulas[i][j] == '*'){geracao[i][j] = ' ';}
                 }
            }
      }
      
      for(i = 0; i < tamanho; i++) {
            for(j = 0; j < tamanho; j++) {
                  printf("%c", geracao[i][j]);
                  if(j == (tamanho - 1)) { printf("\n"); }
            }
      }
      for(i = 0; i < tamanho; i++) {
            for(j = 0; j < tamanho; j++) {
                  celulas[i][j] = geracao[i][j];
            }
      }
      printf("Digite 's' para sair\n");
      printf("Geracao atual: %d \n", ++ger);
      resp = getche();
      printf("\n");
    }
    getche();
}
